//
//  AppDelegate.swift
//  sinaweibo
//
//  Created by WGP on 16/4/8.
//  Copyright © 2016年 WGP. All rights reserved.
//

import UIKit


/*
微博数据缓存流程:
1.查看本地数据库是否保存数据
2.如果本地数据有数据直接使用本地数据库的数据
3.本地没有数据,发送网络请求,去服务器加载数据
4.将服务器返回的数据保存到本地
5.在将服务器返回的数据,返回给别人处理
*/

/*

1.plist: NSArray/NSDictionary: writeToFile
2.偏好设置: NSUserDefaults: key -> value,小数据,国际化 12语言
3.NSCoding: 归档和接档
4.SQLite:数据
5.CoreData: SQLite, 内存,xml

*/

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    
    var window: UIWindow?
    
    
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        
//        启用数据库
        HMSQLiteManager.sharedManager
        
        window = UIWindow(frame: UIScreen.mainScreen().bounds)
        
//        let mainTabBarController = HMMainTabBarController()
        
        //        window?.rootViewController = mainTabBarController
        
        //TODO: 测试
        //        window?.rootViewController = HMWelcomeViewController()
        
//        程序启动后应该展示的控制器
        window?.rootViewController = didFinishLanuchShouldViewController()
        
        window?.makeKeyAndVisible()
        
        return true
    }
    
    ///是否是新版本
    private func isNewVersion() ->Bool
    {
//        1.获得当前的版本
        let currentVersion = NSBundle.mainBundle().infoDictionary?["CFBundleVersion"] as? String
        
//        2.获得上一个版本
        let sandboxKey = "sandboxKey"
        let sanboxKeyVersion = NSUserDefaults.standardUserDefaults().stringForKey(sandboxKey)
        
//        3.比较
        let newVersion = (currentVersion != sanboxKeyVersion)
        
//        4.是新版本,保存新的版本号
        if newVersion
        {
            NSUserDefaults.standardUserDefaults().setObject(currentVersion, forKey: sandboxKey)
            ///同步更新
            NSUserDefaults.standardUserDefaults().synchronize()
        }
//        5.返回比较的结果
        return newVersion
    }
    
/// 程序启动后应该加载的控制器
    private func didFinishLanuchShouldViewController() ->UIViewController
    {
        if HMUserAccountViewModel.sharedInstance.userLogin
        {
            let newVersion = isNewVersion()
            return newVersion ? HMNewFeatureCollectionVC() : HMWelcomeViewController()
        }
        
        return HMMainTabBarController()
    }
    
//    跳转控制器
    func switchViewController(controller: UIViewController) ->()
    {
        window?.rootViewController = controller
    }
    
    func applicationDidEnterBackground(application: UIApplication) {
        
//        清楚缓存
        HMStatusDAL.sharedDAL.deleteCacheStatus()
    }
    
}

